﻿//using System;
//using System.Collections.Generic;
//using System.Text.RegularExpressions;
//using wne.models;

//namespace wne.core.Interface
//{
//    public interface AccountFacade
//    {
//        /// <summary>
//        /// Этот метод определяет, есть ли пользователь с таким сочетанием UserName/Pass в базе. 
//        /// Для пустых полей - всегда false. Допустимые символы - [a-A][0-9]-_ должны отсекаться на уровне 
//        /// формы и до сюда не доходить. Дошли - exception
//        /// </summary>
//        /// <param name="userName">Введенное имя пользователя</param>
//        /// <param name="pass">Введенный пароль</param>
//        /// <returns>true - если такой пользователем с таким паролем есть, false - иначе</returns>
//        bool IsValidLogOn(string userName, string pass);
//        /// <summary>
//        /// Определяет, есть ли такой пользователь-администратор
//        /// </summary>
//        /// <param name="userName">Введенное имя пользователя</param>
//        /// <returns>true - если есть такой пользователь, и он администратор. false - иначе</returns>
//        bool IsAdmin(string userName);
//    }

//    //public interface IAdminFacade
//    //{
//    //    /// <summary>
//    //    /// Возвращает всю информацию о группе в базе по заданному идентефикатору
//    //    /// </summary>
//    //    /// <param name="id">Идентефикатор группы. Если равен -1, надо заполнить только AvaliableParents,
//    //    ///     остальное просто проинициализировать</param>
//    //    /// <returns>Заполненный данными из БД экземпляр класса models.GroupModel</returns>
//    //    models.GroupModel GetGroupById(int id);
//    //    /// <summary>
//    //    /// Возвращает список всех групп, которые есть в базе, и необходимую информацию о них
//    //    /// </summary>
//    //    /// <param name="orderNum">Порядковый номер сортировки.1 - Сортировка по алфавиту по умолчанию. 2-по алфавиту в обратном порядке 
//    //    /// 3-по возрастанию количества юзеров. 4-по убыванию количества юзеров
//    //    /// Иначе - exception</param>
//    //    /// <returns>Заполненный данными из бд список экземпляров класса models.GroupSmallModel</returns>
//    //    List<models.GroupSmallModel> GetAllGroups(int orderNum);
//    //    /// <summary>
//    //    /// Удаляет из базы группу с заданным идентефикатором. Если ВНЕЗАПНО ошибки - exception же
//    //    /// </summary>
//    //    /// <param name="id"></param>
//    //    void DeleteGroupByIdWithoutChild(int id);
//    //    /// <summary>
//    //    /// Метод для обновления или создания группы в БД
//    //    /// </summary>
//    //    /// <param name="id">ИД группы, которую надо обновить. Если NULL - группу надо создать</param>
//    //    /// <param name="name">Имя группы</param>
//    //    /// <param name="CurrentParents">Список ИД родительских через запятую. Может содержать повторяющиеся
//    //    /// группы, их надо отлавливать и оставлять только одну(Например: на входе 10,10,20 - надо добавить род. группы
//    //    /// с ИД 10 и 20</param>
//    //    /// <param name="FieldNames">Имена полей группы через запятую</param>
//    //    /// <param name="FieldTypes">ИД Типов группы через запятую</param>
//    //    /// <param name="fieldCanEdit">Возможность редактирования поля пользователем через запятую. Возможные значения:
//    //    /// true/false. Example: "true,true,false"</param>
//    //    /// <param name="fieldMandatore">Является ли поле обязательным через запятую. Возможные значения:
//    //    /// true/false. Example: "true,true,false"</param>
//    //    /// <param name="fieldVarValues">Список вариантов выбора для поля(если у заданного типа есть варианты выбора)
//    //    /// Формат: Var1;Var2;Var3;,,Var4;Var5
//    //    /// Т.е. - для каждого поля разделитель между вариантами - ; между полями - , даже для полей, где вариантов
//    //    /// выбора нет, может что-то приходить</param>
//    //    /// <returns></returns>
//    //    wne.models.GroupModel UpdateOrAddGroup(string id, string name, string CurrentParents, string FieldNames, string FieldTypes,
//    //        string fieldCanEdit, string fieldMandatore, string fieldVarValues);

//    //    /// <summary>
//    //    /// Возвращает всю информацию о пользователе
//    //    /// </summary>
//    //    /// <param name="id">Идентификатор пользователя. Если равен -1 - значит новый пользователь,
//    //    ///  нужно заполнить только AllGroups,
//    //    ///                  остальное просто проинициализироать.</param>
//    //    /// <returns>Заполненный данными из БД экземпляр класса models.EditUser</returns>
//    //    models.EditUser GetUserById(int id);

//    //    /// <summary>
//    //    /// Метод для обновления или создания пользователя в БД
//    //    /// Если пользователь создается, для него должен быть сгенерирован пароль и отправлен ему на e-mail
//    //    /// </summary>
//    //    /// <param name="model">Экземпляр класса models.EditUser для сохранения.</param>
//    //    /// <returns>true/false в случае успеха / ошибки</returns>    
//    //    Boolean UpdateOrAddUser(EditUser model);

//    //    /// <summary>
//    //    /// Метод для обновления модели, без сохранения в БД. У пользователя удаляется группа.
//    //    /// Необходимо заного заполнить AllGroups и Groups с учетом измененых групп пользователя.
//    //    /// </summary>
//    //    /// <param name="model">Экземпляр класса models.EditUser для изменения.</param>
//    //    /// <param name="GroupId">Идентификатор группы, из которой исключается пользователь.</param>
//    //    /// <returns>Экземпляр класса models.EditUser, заполненный данными.</returns>     
//    //    models.EditUser delGroup(models.EditUser model, int GroupId);

//    //    /// <summary>
//    //    /// Метод для обновления модели, без сохранения в БД. Пользователю добавляется группа.
//    //    /// Необходимо заного заполнить AllGroups и Groups с учетом измененых групп пользователя.
//    //    /// </summary>
//    //    /// <param name="model">Экземпляр класса models.EditUser для изменения.</param>
//    //    /// <param name="GroupId">Идентификатор группы, которая добавляется пользователю.</param>
//    //    /// <returns>Экземпляр класса models.EditUser, заполненный данными.</returns>     
//    //    models.EditUser addGroup(models.EditUser model, int GroupId);
        
//    //}
//}